#include <iostream>
#include <thread>
#include <future>

// 通过在线程中对promise设置对象数据，其他线程通过future获取设置数据的方式
// 实现获取异步任务执行结果的功能
void Add(int num1,int num2,std::promise<int>& prom)
{
    prom.set_value(num1 + num2);
    return;
}

int main() {
    // 创建一个 promise 对象（用于存储结果）
    std::promise<int> prom;

    // 通过 promise 获取关联的 future 对象（用于读取结果）
    std::future<int> fu = prom.get_future();

    // 创建线程，执行 Add 任务，并传递 promise 的引用
    std::thread thr(Add, 11, 22, std::ref(prom));

    // 主线程阻塞，等待 future 获取结果
    int res = fu.get();
    std::cout << "sum:" << res << std::endl;

    // 等待子线程结束
    thr.join();
    return 0;
}